home *** CD-ROM | disk | FTP | other *** search
/ Flash MX Savvy / FlashMX Savvy.iso / pc / WIN / UltraDev / UltraDev_Trial.exe / Disk1 / data1.cab / Configuration_En / Commands / Menu Properties.js < prev    next >
Encoding:
JavaScript  |  2000-12-11  |  7.9 KB  |  280 lines

  1.  
  2. // Copyright 2000 Macromedia, Inc. All rights reserved. 
  3.  
  4.  
  5. //************************GLOBALS**************************
  6.  
  7.  
  8. var EMPTY_LIST = new Array();
  9. var GRID_MENU;
  10. var LAYER_MANUAL;
  11. var LAYER_DATABASE;
  12. var TF_MENU_TEXT;
  13. var TF_MENU_VALUE;
  14. var TF_DEFAULT_MANUAL;
  15. var MENU_RECORDSET;
  16. var MENU_TEXT;
  17. var MENU_VALUES;
  18. var TF_DEFAULT_DATABASE;
  19. var RADIO_MENU_TYPE;
  20.  
  21.  
  22. //********************API FUNCTIONS**************************
  23.  
  24. function commandButtons(){
  25.  
  26.    return new Array(BTN_OK,    "okClicked()",
  27.                     BTN_Cancel,"cancelClicked()");
  28. }
  29.  
  30. //******************LOCAL FUNCTIONS**************************
  31.  
  32. function okClicked(){
  33.   if (LAYER_MANUAL.visibility == "visible"){ // static menu object created
  34.     var allRows = GRID_MENU.list, nRows = allRows.length, currRowText, dividerInd;
  35.   var textArr = new Array(),valArr = new Array();
  36.  
  37.   for (i=0;i<nRows;i++){
  38.     currRowText = allRows[i];
  39.     dividerInd = currRowText.indexOf("|");
  40.     textArr.push(currRowText.substring(0,dividerInd));
  41.     valArr.push(currRowText.substring(dividerInd +1));
  42.   }
  43.  
  44.   MM.commandReturnValue = new eoMenu(textArr,valArr,TF_DEFAULT_MANUAL.value);
  45.   } else { // dynamic menu object created
  46.  
  47.     dynMenuObj = new eoDynamicMenu();
  48.     dynMenuObj.recordset = MENU_RECORDSET.getValue();
  49.     dynMenuObj.textCol = MENU_TEXT.getValue();
  50.     dynMenuObj.valCol = MENU_VALUES.getValue();
  51.     dynMenuObj.defaultSelected = TF_DEFAULT_DATABASE.value;
  52.  
  53.   MM.commandReturnValue = dynMenuObj;
  54.   }
  55.   
  56.   clearUI();
  57.   window.close();
  58. }
  59.  
  60.  
  61. function clearUI(){
  62.   GRID_MENU.setAllRows(new Array(),new Array());
  63.   TF_MENU_TEXT.value = "";
  64.   TF_MENU_VALUE.value = "";
  65.   TF_DEFAULT_MANUAL.value = ""; 
  66.   TF_DEFAULT_DATABASE.value = "";
  67.   
  68.   LAYER_MANUAL.visibility="hidden";
  69.   LAYER_DATABASE.visibility="hidden";
  70.   MENU_RECORDSET.setIndex(0);
  71.   MENU_TEXT.setIndex(0);
  72.   MENU_VALUES.setIndex(0);
  73. }
  74.  
  75. function cancelClicked(){
  76.   MM.commandReturnValue = "";
  77.   clearUI();
  78.   window.close();
  79. }
  80.  
  81.  
  82. function initializeUI(){
  83.  
  84.   LAYER_MANUAL   = document.layers["manualLayer"];
  85.   LAYER_DATABASE = document.layers["databaseLayer"];
  86.   
  87.   RADIO_MENU_TYPE = new RadioGroup("Populate");
  88.   GRID_MENU = new GridWithNavControls("MenuGrid",LAYER_MANUAL,true);
  89.   GRID_MENU.setColumnNames(MM.LABEL_MenuGrid);
  90.  
  91.   TF_MENU_TEXT = findObject("MenuText",LAYER_MANUAL);
  92.   TF_MENU_VALUE = findObject("MenuValue",LAYER_MANUAL);
  93.   TF_DEFAULT_MANUAL = findObject("DefaultValueManual",LAYER_MANUAL);
  94.   MENU_RECORDSET = new ListControl("Recordset",LAYER_DATABASE);
  95.   MENU_TEXT = new ListControl("GetMenuText",LAYER_DATABASE);
  96.   MENU_VALUES = new ListControl("GetMenuValues",LAYER_DATABASE);
  97.   TF_DEFAULT_DATABASE = findObject("DefaultValueDatabase",LAYER_DATABASE);
  98.  
  99.   var menuInfoObj = MM.commandArgument;
  100.   if (menuInfoObj.type == "menu" ){ // if a static menu
  101.     initManualLayer();
  102.     showDifferentLayer("manual");
  103.     RADIO_MENU_TYPE.setSelectedIndex(0);
  104.     if (menuInfoObj.textArr != "" || menuInfoObj.defaultSelected != ""){ // if there are prior values
  105.       var nOptions = menuInfoObj.textArr.length,i;
  106.       var gridDisplayArr = new Array();
  107.       var textArr = menuInfoObj.textArr;
  108.       var valArr  = menuInfoObj.valArr;
  109.       for (i=0;i<nOptions;i++){
  110.         gridDisplayArr[i] = textArr[i] + "|";
  111.         if (valArr[i])
  112.           gridDisplayArr[i] += valArr[i];
  113.       }
  114.     
  115.       if (gridDisplayArr.length && gridDisplayArr.length > 0) {
  116.         GRID_MENU.setAllRows(gridDisplayArr);
  117.         GRID_MENU.setRowIndex(0);
  118.         displayGridValues();
  119.       }
  120.         
  121.       TF_MENU_TEXT.focus();
  122.       if (TF_MENU_TEXT.value != "")
  123.         TF_MENU_TEXT.select();
  124.       TF_DEFAULT_MANUAL.value = menuInfoObj.defaultSelected;
  125.    }
  126.   } else { // if a dynamic menu
  127.     RADIO_MENU_TYPE.setSelectedIndex(1);
  128.     initDatabaseLayer();
  129.     showDifferentLayer('database');
  130.     // next line is work-around for bug that buttons disappeared
  131.     document.layers["topLayer"].visibility = "visible"; 
  132.     if (menuInfoObj.recordset){ // if there are prior values
  133.       MENU_RECORDSET.pickValue(menuInfoObj.recordset);
  134.       updateColumns();
  135.       MENU_TEXT.pickValue(menuInfoObj.textCol);
  136.       MENU_VALUES.pickValue(menuInfoObj.valCol);
  137.       TF_DEFAULT_DATABASE.value = menuInfoObj.defaultSelected;
  138.     }
  139.   }
  140.  
  141.  
  142. }
  143.  
  144. function initDatabaseLayer(){
  145.   var rsNames = findAllRecordsetNames(), colNames;
  146.   MENU_RECORDSET.setAll(rsNames,rsNames);
  147.   updateColumns();
  148.   TF_DEFAULT_DATABASE.value = "";
  149.   if (TF_DEFAULT_MANUAL.value != ""){
  150.     TF_DEFAULT_DATABASE.value = TF_DEFAULT_MANUAL.value;
  151.   }
  152. }
  153.  
  154.  
  155.  
  156. function addNewRow(){
  157.   GRID_MENU.addRow(MM.LABEL_menuPropLabelPrefix + "|");
  158.   displayGridValues();
  159.   var newLabel = getUniqueLabel(MM.LABEL_menuPropLabelPrefix);
  160.   TF_MENU_TEXT.value = newLabel;
  161.   updateGridRow();
  162.   TF_MENU_TEXT.focus();
  163.   TF_MENU_TEXT.select();
  164. }
  165.  
  166. function initManualLayer(){
  167.   if (GRID_MENU.list.length == 0){
  168.     TF_DEFAULT_MANUAL.value = "";
  169.     addNewRow();
  170.     GRID_MENU.setRowIndex(0);
  171.   } else {
  172.     if (GRID_MENU.list.length == 1 && GRID_MENU.getRow() == "|"){
  173.       GRID_MENU.setRow(" |");
  174.       GRID_MENU.setRowIndex(0);
  175.     }
  176.     TF_MENU_TEXT.focus();
  177.     TF_MENU_TEXT.select();
  178.   }
  179.   
  180.   if (TF_DEFAULT_DATABASE.value !=""){
  181.     TF_DEFAULT_MANUAL.value = TF_DEFAULT_DATABASE.value;
  182.   }
  183. }
  184.  
  185.  
  186. function showDifferentLayer(whichOne){
  187.   if (whichOne == 'database'){
  188.     if (findAllRecordsetNames().length == 0){
  189.       alert (MM.MSG_NeedRecordsetForOption);
  190.       document.layers["topLayer"].document.forms[0].Populate[0].checked = true;
  191.       document.layers["topLayer"].document.forms[0].Populate[1].checked = false;
  192.       return;
  193.     }
  194.     LAYER_MANUAL.visibility   = "hidden";
  195.     LAYER_DATABASE.visibility = "visible";
  196.    initDatabaseLayer();
  197.   } else {
  198.    LAYER_DATABASE.visibility = "hidden";
  199.    LAYER_MANUAL.visibility   = "visible";
  200.    initManualLayer();
  201.   }
  202.  
  203. }
  204.  
  205. function updateGridRow(){
  206.    GRID_MENU.setRow(TF_MENU_TEXT.value + "|" + TF_MENU_VALUE.value);
  207. }
  208.  
  209. function displayGridValues(){
  210.    var currRow = GRID_MENU.getRow();
  211.    var dividerIndex = currRow.indexOf("|");
  212.    TF_MENU_TEXT.value = currRow.substring( 0,dividerIndex);
  213.    TF_MENU_VALUE.value = currRow.substring(dividerIndex+1);
  214. }
  215.  
  216.  
  217.  
  218.  
  219. // function: displayDynamicDataDialog
  220. // description: pops up the dialog allowing the user to choose dynamic data
  221. function displayDynamicDataDialog(textFieldObj){
  222.   var serverModel = dw.getDocumentDOM().serverModel.getServerName();
  223.   var expression = dw.showDynamicDataDialog(textFieldObj.value);
  224.   
  225.    if (expression) {
  226.      if (serverModel == "Cold Fusion") {
  227.        expression = stripCFOutput(expression);
  228.      }
  229.      textFieldObj.value = expression;
  230.    }
  231. }
  232.  
  233.  
  234. function updateColumns(){
  235.   colNames = findAllColumnNames(MENU_RECORDSET.getValue());
  236.   
  237.     if (colNames && colNames.length > 0) {
  238.       MENU_TEXT.setAll(colNames, colNames);
  239.       MENU_TEXT.setIndex(0);
  240.     } else {
  241.       MENU_TEXT.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  242.     }
  243.       
  244.     if (colNames && colNames.length > 0) {
  245.       MENU_VALUES.setAll(colNames, colNames);
  246.       MENU_VALUES.setIndex(0);
  247.     } else {
  248.       MENU_VALUES.setAll(new Array(MM.LABEL_NoColumns), EMPTY_LIST);
  249.     }
  250. }
  251.  
  252.  
  253. function getUniqueLabel() {
  254.   var label, i, num=1, isUnique;
  255.  
  256.   for (isUnique=false; !isUnique; num++) {
  257.     label = TEXT_defaultItemText + num;
  258.     isUnique = true;
  259.     for (i=0; i<GarrMenuOptions.length && isUnique; i++)
  260.       if (GarrMenuOptions[i][0] == label) isUnique=false;
  261.   }
  262.   return label;
  263. }
  264.  
  265.  
  266. function getUniqueLabel(baseName) {
  267.   var label, i, num=1, isUnique,rowText,menuLabel;
  268.  
  269.   for (isUnique=false; !isUnique; num++) {
  270.     label = baseName + num; 
  271.     isUnique = true;
  272.     for (i=0; i<GRID_MENU.list.length && isUnique; i++) {
  273.       rowText = GRID_MENU.list[i]; 
  274.       menuLabel = rowText.substring(0,rowText.indexOf("|"));
  275.       if (menuLabel == label) isUnique=false;
  276.     }
  277.   }
  278.   return label;
  279. }
  280.